/*
 * 
 * 
 */
package cosc617_blackteam;

import java.util.ArrayList;

/**
 * Interface for an InfoAggregator
 * @author Anton
 */
public interface I_InfoAggregator {
	 
    /**
     * Resets the state of the restaurant
     */
    public void resetStats();
    
    public void addComment(Comment comment);
    
    public void addOrder(Order order);
    
    public OrderCollections getOrders();

    public Menu getMenu();

    public CommentCollection getComments();
    
    /**
     * @return all tables in the infoaggregator
     */
    public TableCollections getTables();
    
    /**
     * Uses the selected seating strategy to assign
     * the given party to an open table
     * @param party party to be assigned
     * @return whether party was successfully assigned
     */
    public boolean addParty(CustomerParty party);
    
    /**
     * Finds the given table where a party is seated and
     * removes the party from that table
     * @param party the party to be removed from a table
     */
    public void removeParty(CustomerParty party);
    
    public void addMenuItem(MenuItem item);

	public int getNumItemsOrdered();

	public void incrementNumItemsOrdered();

	public int getNumCustomersServed();

	public void incrementCustomersServed() ;
	
	public void setSeatingStrategy(I_SeatingStrategy strategy);

	public void setPrepStrategy(I_CookingStrategy strategy);
	
	public void prepareFood();

	public void removeOrders(ArrayList<Order> orders);
	
	public void addTab(I_Tab tab);
	
	public TabCollection getTabs();
}
